#!/usr/bin/env python3
# Created by han on 2016/7/4
import socket
ip_port = ("192.168.31.194", 8899)
sk = socket.socket()
sk.connect(ip_port)

recv_data = sk.recv(1024)
# print(recv_data.decode())

while True:
    cmd_data = input(">>: ").strip() #格式化命令数据
    if not cmd_data:      #如果输入命令为空，则重新输入
        continue
    if cmd_data == "exit":  #如果命令为exit 为退出，终端本次通话
        break
    sk.sendall(bytes(cmd_data, "utf8"))   #正常就传送命令数据
    ready_data = sk.recv(1024)            #然后接受准备数据
    raw_data = ready_data.decode()        #解码准备接收数据
    # print(raw_data)
    if raw_data.startswith("ready"):      #如果这个数据开头是ready开始的
        raw_len = int(raw_data.split("|")[-1]) #则获取长度
        # print("len======",raw_len,type(raw_len))
        client_ready = bytes("start","utf8")  #准备开始数据
        sk.sendall(client_ready)              #发送可以接受数据的信号
        data_len = 0                           #初始化长度
        data = b""                             #初始化数据
        while data_len < raw_len:
            recv_data = sk.recv(1024)          #循环接受数据
            data_len+=len(recv_data)           #循环增加数据长度
            data+=recv_data                    #循环将数据相加
            print("all_len : %d,local_len : %d"% (raw_len, data_len))
        print(data.decode())
    else:
        error_data = sk.recv(1024)
        print(error_data.decode())
sk.close()